/*******************************************************************************
* Copyright 2011 Alex 'Ript' Malyshev <alexript@gmail.com>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
******************************************************************************/
package net.autosauler.ballance.server.model;
import net.autosauler.ballance.server.mongodb.Database;
import net.autosauler.ballance.shared.UserRole;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
/**
* The Class UserList.
*/
public class UserList {
/** The Constant collectionname. */
final private static String collectionname = "registredusers";
/**
* Creates the default records if no users in database.
*
* @param db
* the db
*/
public static void createDefaultRecords(DB db) {
if (db != null) {
DBCollection coll = db.getCollection(collectionname);
if (coll.getCount() < 1) {
UserRole defaultroles = new UserRole();
defaultroles.setAdmin();
User user = new User();
user.setPassword("admin");
user.setLogin("admin");
user.setDomain("127.0.0.1");
user.setUsername("Admin The Great");
user.setUserrole(defaultroles);
user.addNewUser();
BasicDBObject i = new BasicDBObject();
i.put("login", 1);
i.put("domain", 1);
coll.createIndex(i);
i.put("istrash", 1);
coll.createIndex(i);
}
}
}
/**
* Dump.
*
* @param domain
* the domain
* @return the string
*/
public static String dump(String domain) {
StringBuilder sb = new StringBuilder();
sb.append("<users>\n");
Database.retain();
DB db = Database.get(domain);
if (db != null) {
DBCollection coll = db.getCollection(collectionname);
BasicDBObject query = new BasicDBObject();
query.put("domain", domain);
DBCursor cur = coll.find(query);
while (cur.hasNext()) {
DBObject myDoc = cur.next();
User dbuser = new User(myDoc);
sb.append(dbuser.dump());
}
}
Database.release();
sb.append("</users>\n");
return sb.toString();
}
/**
* Gets the users list.
*
* @return the users
*/
public static net.autosauler.ballance.shared.UserList getUsers(String domain) {
return getUsers(domain, false);
}
/**
* Gets the users list.
*
* @param fromtrash
* the fromtrash
* @return the users
*/
private static net.autosauler.ballance.shared.UserList getUsers(
String domain, boolean fromtrash) {
net.autosauler.ballance.shared.UserList list = new net.autosauler.ballance.shared.UserList();
Database.retain();
DB db = Database.get(domain);
if (db != null) {
DBCollection coll = db.getCollection(collectionname);
BasicDBObject query = new BasicDBObject();
query.put("istrash", fromtrash);
query.put("domain", domain);
DBCursor cur = coll.find(query);
while (cur.hasNext()) {
DBObject myDoc = cur.next();
User dbuser = new User(myDoc);
net.autosauler.ballance.shared.User user = dbuser.getProxy();
list.addUser(user);
}
}
Database.release();
return list;
}
/**
* Gets the users list from trash.
*
* @return the users from trash
*/
public static net.autosauler.ballance.shared.UserList getUsersFromTrash(
String domain) {
return getUsers(domain, true);
}
/**
* Restore.
*
* @param domain
*
* @param val
* the val
*/
public static void restore(String domain, Element vals) {
NodeList nodes = vals.getElementsByTagName("user");
if (nodes.getLength() > 0) {
User.restore(domain, nodes);
}
}
/**
* Instantiates a new user list.
*/
public UserList() {
}
}